/**
 * 
 */
Ext.Loader.setConfig({
			enabled : true
		});

Ext.Loader.setPath('Ext.ux', './js/ext4/ux');

Ext.require(['Ext.data.*', 'Ext.grid.*', 'Ext.tree.*', 'Ext.ux.TreePicker']);

Ext.define('Board', {
			extend : 'Ext.data.Model',
			fields : [{
						name : 'id'
					}, {
						name : 'title'
					}, {
						name : 'content'
					}, {
						name : 'lasttime'
					}, {
						name : 'publishtime'
					}, {
						name : 'publisher'
					}, {
						name : 'status'
					}, {
						name : 'publishername'
					}]
		});

var store = Ext.create('Ext.data.Store', {
			model : 'Board',
			pageSize : 20,
			proxy : {
				type : 'ajax',
				url : 'boardAction!queryPage.action',
				reader : {
					type : 'json',
					root : 'pageList'
				}
			}
		});
function readTitle(data, cell, record, rowIndex, columnIndex, store) {
	var id = record.get('id');
	var title = data;
	var style = 'color:#15428b;cursor: pointer;font-weight:bold;';
	title = '<span style="' + style + '"  data="' + title
			+ '" onclick="openDetail(' + id + ')">' + title + '</span>';
	return title;
}
function openDetail(id) {
	Ext.util.Cookies.set('boardid', id);
	window.top.Utils.addPage('boardQuery' + id, '宣传信息详情',
			'js/resources/business/board/boardQuery.js');
}
var cols = [{
			hidden : true,
			dataIndex : 'id'
		}, {
			text : '标题',
			sortable : true,
			renderer : readTitle,
			dataIndex : 'title',
			flex : 3
		}, {
			text : '发布人',
			sortable : true,
			dataIndex : 'publishername',
			renderer : function(v, m) {
				m.tdCls = 'red';
				return v;
			},
			flex : 1
		}, {
			text : '发布时间',
			sortable : true,
			dataIndex : 'publishtime',
			renderer : function(value) {
				if (value != '') {
					return value.replace('T', ' ');
				} else {
					return "未发布";
				}
			},
			flex : 1
		}, {
			text : '生成时间',
			sortable : true,
			dataIndex : 'lasttime',
			renderer : function(value) {
				if (value != '') {
					return value.replace('T', ' ');
				}
			},
			// renderer : Ext.util.Format.dateRenderer('Y-m-d'),
			flex : 1
		}, {
			text : '状态',
			sortable : true,
			dataIndex : 'status',
			flex : 1,
			renderer : function(v) {
				if (v == 1) {
					return '草稿';
				}
				if (v == 2) {
					return '已发布';
				}
			}
		}];

var addBtn = {
	xtype : 'button',
	text : '新增',
	name : 'add',
	width : 50,
	iconCls : 'icon-add',
	// hidden : true,
	handler : function() {
		window.top.Utils.addPage('boardAdd', '宣传栏新增',
				'js/resources/business/board/boardAdd.js');
	}
};

var editBtn = {
	xtype : 'button',
	text : '修改',
	// hidden : true,
	iconCls : 'icon-edit',
	handler : function() {
		var selMode = grid.getSelectionModel();
		var model = selMode.getSelection();
		var raw = model[0].raw;
		if (model.length == 1) {
			Ext.util.Cookies.set('boardId', raw.id);
			Ext.util.Cookies.set('flag', 'edit');
			window.top.Utils.addPage('boardEdit' + raw.id, '宣传信息修改',
					'js/resources/business/board/boardAdd.js');
		} else if (model.length > 1) {
			Ext.Msg.alert('提示', '只能选择一条修改！');
			return;
		}
	}
};
var deleteBtn = {
	xtype : 'button',
	text : '删除',
	iconCls : 'icon-delete',
	handler : function() {
		var selMode = grid.getSelectionModel();
		var model = selMode.getSelection();
		if (model[0]) {
			var ids = [];// 删除多个
			Ext.Array.each(model, function(item) {
						ids.push(item.raw.id);
					});
			Ext.Msg.show({
						title : '确认删除',
						buttons : Ext.MessageBox.OKCANCEL,
						msg : '确定删除选择项?',
						fn : function(btn) {
							if (btn == 'ok') {
								Ext.Ajax.request({
											url : 'boardAction!delete.action?ids='
													+ ids,
											success : function(response) {
												Ext.Msg.show({
															title : '提示',
															msg : '删除成功！',
															buttons : Ext.Msg.OK,
															width : 300,
															fn : function() {
																store.reload();
															}
														});
											},
											failure : function(response, opts) {
											}
										});
							}
						}
					});
		}
	}
};

var publishBtn = {
	xtype : 'button',
	text : '发布',
	iconCls : 'icon-application_go',
	// hidden : true,
	handler : function() {
		var selMode = grid.getSelectionModel();
		var model = selMode.getSelection();

		if (model.length == 0) {
			Ext.Msg.alert('提示', '请选择要发布的信息！');
		}
		if (model[0]) {
			var ids = [];
			Ext.Array.each(model, function(item) {
						if (item.raw.status != 1) {
							Ext.Msg.alert('提示', '您选择的数据中存在已发布状态数据，请重新选择！');
							ids = [];
							return false;
						} else {
							ids.push(item.raw.id);
						}
					});
			if (ids.length == 0) {
				return;
			} else {
				Ext.Msg.show({
							title : '确认发布',
							buttons : Ext.MessageBox.OKCANCEL,
							msg : '确定发布公告?',
							fn : function(btn) {
								if (btn == 'ok') {
									Ext.Ajax.request({
												url : 'boardAction!publish.action?ids='
														+ ids,
												success : function(response) {
													Ext.Msg.show({
																title : '提示',
																msg : '发布成功！',
																buttons : Ext.Msg.OK,
																width : 300,
																fn : function() {
																	store
																			.reload();
																}
															});
												},
												failure : function(response,
														opts) {
												}
											});
								}
							}
						});
			}
		}
	}
};

var searchTitle = new Ext.form.TextField({
			fieldLabel : '标题',
			labelWidth : 70,
			id : "searchTitle",
			// hidden:true,
			emptyText : '请输入...'
		});
var begin = new Ext.form.DateField({
			fieldLabel : '发布时间',
			labelWidth : 60,
			id : 'begin',
			emptyText : '请选择...',
			format : 'Y-m-d',
			editable : false,
			vtype : 'daterange',// daterange类型为上代码定义的类型
			endDateField : 'end',// 必须跟endDate的id名相同
			onTriggerClick : function() {
				var dt1 = this;
				Ext.form.DateField.prototype.onTriggerClick.apply(dt1,
						arguments);
				if (Ext.isEmpty(dt1.clearBtn)) {
					this.clearBtn = new Ext.Button({
								text : '清除',
								handler : function() {
									dt1.setValue("");
									dt1.picker.hide();
									dt1.collapse();
								}
							});
					dt1.clearBtn.render(dt1.picker.todayBtn.container);
				}
			}
		});
var end = new Ext.form.DateField({
			fieldLabel : '至',
			labelSeparator : '',
			id : 'end',
			labelWidth : 30,
			emptyText : '请选择...',
			format : 'Y-m-d',
			editable : false,
			vtype : 'daterange',// daterange类型为上代码定义的类型
			startDateField : 'begin',// 必须跟endDate的id名相同
			onTriggerClick : function() {
				var dt1 = this;
				Ext.form.DateField.prototype.onTriggerClick.apply(dt1,
						arguments);
				if (Ext.isEmpty(dt1.clearBtn)) {
					this.clearBtn = new Ext.Button({
								text : '清除',
								handler : function() {
									dt1.setValue("");
									dt1.picker.hide();
									dt1.collapse();
								}
							});
					dt1.clearBtn.render(dt1.picker.todayBtn.container);
				}
			}
		});
var searchBtn = {
	xtype : 'button',
	text : '搜索',
	iconCls : 'icon-search',
	// hidden : true,
	handler : function() {
		var proxy = store.getProxy();
		var b1 = begin.getValue();
		var b2 = end.getValue();
		if (b1 != null && b2 != null) {
			if (b1 > b2) {
				Ext.Msg.alert('提示', "日期开始日期大于结束日期，请重新选择！");
				return;
			}
		}
		var searchBegin;
		var searchEnd;
		if (begin.getValue() != null) {
			searchBegin = begin.getValue().Format("yyyy-MM-dd"); // 起始时间
		}
		if (end.getValue() != null) {
			searchEnd = end.getValue().Format("yyyy-MM-dd"); // 截止时间
		}
		proxy.extraParams = {
			"title" : searchTitle.getValue(),
			"beginDate" : searchBegin,
			"endDate" : searchEnd
		};
		store.reload();
	}
};
var grid = Ext.create('Ext.grid.Panel', {
			store : store,
			border : 0,
			selModel : Ext.create('Ext.selection.CheckboxModel'),
			columns : cols,
			stripeRows : true,
			dockedItems : [{
						xtype : 'toolbar',
						dock : 'top',
						items : [begin, end, searchTitle, searchBtn]
					}],
			tbar : [addBtn, editBtn, publishBtn, deleteBtn],
			bbar : Ext.create('Ext.PagingToolbar', {
						pageSize : 20,// 每页20条
						store : store,
						displayInfo : true,
						plugins : Ext.create('Ext.ux.ProgressBarPager', {})
					})
		});

function ExternalRefresh() {
	var proxy = store.getProxy();
	var searchBegin = null;
	var searchEnd = null;
	if (begin.getValue() != null) {
		searchBegin = begin.getValue().Format("yyyy-MM-dd"); // 起始时间
	}
	if (end.getValue() != null) {
		searchEnd = end.getValue().Format("yyyy-MM-dd"); // 截止时间
	}
	proxy.extraParams = {
		"title" : searchTitle.getValue(),
		"beginDate" : searchBegin,
		"endDate" : searchEnd
	};
	store.reload();
};
Ext.onReady(function() {
			Ext.create('Ext.container.Viewport', {
						layout : 'fit',
						border : false,
						layout : {
							type : 'hbox',
							align : 'stretch'
						},
						items : [{
									flex : 5,
									layout : 'fit',
									border : false,
									items : [grid]
								}]
					});
			store.load();
		});